/*
 * InputGenerators.h
 *
 *  Created on: Sep 17, 2013
 *      Author: sjelic
 */

#ifndef INPUTGENERATORS_H_
#define INPUTGENERATORS_H_

#include "coveringPackingMiscellaneous.h"

namespace ig
{
	class InputGenerator
	{
		public:
			unsigned int num_constr_pack; //number of packing constraints
			unsigned int num_constr_cov; //number of packing constraints
			unsigned int num_var; // number of packing variables

			//virtual void createInputFile() = 0;
			//std::string fileExtension;
			//InputGenerator();
			//virtual ~InputGenerator() = 0;
	};

	class BernoulliMPCInputGenerator : InputGenerator
	{
	public:

	    float probability_of_one_pack;
	    float probability_of_one_cov;

	    BernoulliMPCInputGenerator(float, float, unsigned int, unsigned int, unsigned int);
		void createInputFile(std::string);

		~BernoulliMPCInputGenerator();


	};

	class KleeMintyMPCInputGenerator : InputGenerator
	{
		public:
			KleeMintyMPCInputGenerator(unsigned int, unsigned int, unsigned int);
			void createInputFile(std::string);
			~KleeMintyMPCInputGenerator();
	};


	void message(std::string);
}



#endif /* INPUTGENERATORS_H_ */
